大家好
最近我写程序中用到了MmMapIoSpace来读取某块物理内存的内容
在调试中我想验证一下读得对不对,所以就用了 !dd aPhysicalAddress 命令,但是windbg提示如下内容:
kd> !dd e9000 physical memory read at e9000 failed If you know the caching attributes used for the memory, try specifying , [uc] or [wc], as in !dd <params>. WARNING: Incorrect use of these flags will cause unpredictable processor corruption. This may immediately (or at any time in the future until reboot) result in a system hang, incorrect data being displayed or other strange crashes and corruption. 然后我就加了参数,发现果然能正确显示,后来又试了[uc] [wc]参数,发现三者显示的内容都一样, MmMapIoSpace读出来的内容也一样
我就很奇怪,加了这三个参数与不加参数有什么区别么?其中的原理是什么?不加那三个参数时windbg是从哪里 读取物理内存的内容呢?为什么有时候会显示错误信息呢?
后来google了一下,MS的Andre Vachon这样说 This is by design on windows XP. You must read the message and do what it says. -Andre
那么为什么要这么设计呢?
希望各位牛牛有时间的话,给我指点一下迷津,或者推荐一些资料,或者说说应该查找什么方面的资料都可以
谢谢
|